home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / flying-6.11 / game.C < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-30  |  4.8 KB  |  222 lines

  1. #ifndef _global_h
  2. #    include "global.h"
  3. #endif
  4.  
  5. #ifndef _game_h
  6. #    include "game.h"
  7. #endif
  8. #ifndef _wall_h
  9. #    include "wall.h"
  10. #endif
  11. #ifndef _ball_h
  12. #    include "ball.h"
  13. #endif
  14. #ifndef _graph_h
  15. #    include "graph.h"
  16. #endif
  17. #ifndef _keeper_h
  18. #    include "keeper.h"
  19. #endif
  20.  
  21. #ifdef DEBUG
  22. #    define    SHOW_INFO
  23. #endif
  24.  
  25.  
  26. Game    *g=0l;;    // globaler Zeiger auf das Spiel-Objekt
  27.  
  28.  
  29. Game::Game(double wx, double wy) {
  30.     x1=x2=0;
  31.     y1=y2=0;
  32.     keeper = 0;
  33.  
  34.     InitGraphic(wx,wy);
  35.     floor = 0;
  36. #ifdef TEST_STATIC_COLORS
  37.     AddStatColor( "Red" );
  38.     AddStatColor( "Magenta" );
  39.     AddStatColor( "Blue" );
  40.     AddStatColor( "Cyan" );
  41.     AddStatColor( "Green" );
  42.     AddStatColor( "Yellow" );
  43.     AddStatColor( "Red1" );
  44.     AddStatColor( "Magenta1" );
  45.     AddStatColor( "Blue1" );
  46.     AddStatColor( "Cyan1" );
  47.     AddStatColor( "Green1" );
  48.     AddStatColor( "Yellow1" );
  49.     AddStatColor( "Red2" );
  50.     AddStatColor( "Magenta2" );
  51.     AddStatColor( "Blue2" );
  52.     AddStatColor( "Cyan2" );
  53.     AddStatColor( "Green2" );
  54.     AddStatColor( "Yellow2" );
  55. #endif
  56.     SetCursorColor( "PaleTurquoise" );
  57.  
  58. #ifdef __TURBOC__
  59.  
  60. unsigned size;
  61.  
  62.     size   = imagesize( getmaxx()/2, 8, getmaxx(), oy );
  63.     buffer = malloc(size);
  64.     if (!buffer)    exit(-1);
  65. #endif
  66.     running_balls=0;
  67. }
  68.  
  69. Game::~Game() {
  70.     if (keeper)        delete keeper;
  71.     if (x1)            delete x1;
  72.     if (y1)            delete y1;
  73.     if (x2)            delete x2;
  74.     if (y2)            delete y2;
  75. }
  76.  
  77. const Real & Game::GetPresetA() const                { return PresetA; }
  78. const Real & Game::GetPresetHaft() const            { return PresetHaft; }
  79. const Real & Game::GetSlowGranularity() const    { return SlowGranularity; }
  80. const Real & Game::GetNormalBallSize() const        { return NormalBallSize; }
  81.  
  82. const Real & Game::GetChargeGranularity() const    { return ChargeGranularity; }
  83. const Real & Game::GetChargeSpeed() const            { return ChargeSpeed; }
  84. const Real & Game::GetMaxCharge() const            { return MaxCharge; }
  85. const Real & Game::GetShootTime() const            { return ShootTime; }
  86.  
  87. Vec2 Game::Edge(int i) const {
  88.     switch(i&0x3) {
  89.         case 0:    return Vec2(AreaOffX(),                    AreaOffY() );
  90.         case 1:    return Vec2(AreaOffX()+AreaWidth(),    AreaOffY() );
  91.         case 2:    return Vec2(AreaOffX()+AreaWidth(),    AreaOffY()+AreaHeight() );
  92.         default:    return Vec2(AreaOffX(),                    AreaOffY()+AreaHeight() );
  93.     }
  94. }
  95. Vec2 Game::Mid(int i) const {
  96.     switch(i&0x3) {
  97.         case 0:    return Vec2(AreaOffX()+AreaWidth()/2.0,    AreaOffY() );
  98.         case 1:    return Vec2(AreaOffX()+AreaWidth(),        AreaOffY()+AreaHeight()/2.0 );
  99.         case 2:    return Vec2(AreaOffX()+AreaWidth()/2.0,    AreaOffY()+AreaHeight() );
  100.         default:    return Vec2(AreaOffX(),                        AreaOffY()+AreaHeight()/2.0 );
  101.     }
  102. }
  103.  
  104. void Game::InitPlayground() {
  105.     y1 = new YWall( 0, MaxX(), 0 );
  106.     x1 = new XWall( MaxX(), 0, MaxY() );
  107.     y2 = new YWall( 0, MaxX(), MaxY() );
  108.     x2 = new XWall( 0, 0, MaxY() );
  109. //    x2 = new XWall( 2.0, 0, MaxY() );
  110. }
  111.  
  112. void Game::DrawBackground() const {
  113. #ifdef __TURBOC__
  114.     setfillstyle(SOLID_FILL,(int)GetAllocatedPixel("black"));
  115.     bar(0,0,getmaxx(),getmaxy());
  116. #endif
  117.     SetBgColor( floor );
  118.     FillRectangle( 0.0, 0.0, MaxX(), MaxY() );
  119.  
  120.     if (keeper)        keeper->Draw();
  121. }
  122.  
  123. void Game::ExposeRedraw() const {
  124.     DrawBackground();
  125.     DynObj::ForAllDyn(&DynObj::Redraw);
  126. }
  127.  
  128. void Game::ResizeRedraw() const {
  129. }
  130.  
  131. void Game::ShowInfo( char *str ) const {
  132. #ifndef __TURBOC__
  133.     printf( "%s\n", str );
  134. #else
  135.  
  136.     getimage( getmaxx()/2, 8, getmaxx(), oy, buffer );
  137.     putimage( getmaxx()/2, 0, buffer, COPY_PUT );
  138.     setfillstyle( SOLID_FILL, getbkcolor() );
  139.     bar(getmaxx()/2,oy-8,getmaxx(),oy-1);
  140.     outtextxy( getmaxx()/2, oy-8, str );
  141. #endif
  142. }
  143.  
  144. int Game::IsSelectable(Ball * /* b */) {
  145.     return 1;
  146. }
  147.  
  148. #ifndef SHOW_INFO
  149.  
  150. void Game::ShootBall( Ball * )        {}
  151. void Game::PressedBall( Ball * )        {}
  152. void Game::TouchedBall( Ball * )        {}
  153. void Game::HitWall( Ball * )            {}
  154. void Game::StartBall( Ball * )        { running_balls++; }
  155. void Game::StopBall( Ball * ) {
  156.     running_balls--;
  157.     if (!running_balls)    AllBallsStopped();
  158. }
  159. void Game::InPocket( Ball * )            { ClickPocket(); }
  160. void Game::AllBallsStopped()            {}
  161.  
  162. #else
  163.  
  164. void Game::ShootBall( Ball *b ) {
  165. char    buffer[30];
  166.  
  167.     sprintf( buffer, "### ShootBall(%d)", b->Object::id );
  168.     ShowInfoIf(buffer);
  169. }
  170.  
  171. void Game::PressedBall(Ball *b) {
  172. char    buffer[30];
  173.  
  174.     sprintf( buffer, "... PressedBall(%d)", b->Object::id );
  175.     ShowInfoIf(buffer);
  176. }
  177.  
  178. void Game::TouchedBall(Ball *b) {
  179. char    buffer[30];
  180.  
  181.     sprintf( buffer, "... TouchedBall(%d)", b->Object::id );
  182.     ShowInfoIf(buffer);
  183. }
  184.  
  185. void Game::HitWall(Ball *b) {
  186. char    buffer[30];
  187.  
  188.     sprintf( buffer, "... HitWall(%d)", b->Object::id );
  189.     ShowInfoIf(buffer);
  190. }
  191.  
  192. void Game::StartBall( Ball *b ) {
  193. char    buffer[30];
  194.  
  195.     sprintf( buffer, "... StartBall(%d)", b->Object::id );
  196.     ShowInfoIf(buffer);
  197.     running_balls++;
  198. }
  199.  
  200. void Game::StopBall( Ball *b ) {
  201. char    buffer[30];
  202.  
  203.     sprintf( buffer, "... StopBall(%d)", b->Object::id );
  204.     ShowInfoIf(buffer);
  205.     running_balls--;
  206.     if (!running_balls)    AllBallsStopped();
  207. }
  208.  
  209. void Game::InPocket( Ball *b ) {
  210. char    buffer[30];
  211.  
  212.     sprintf( buffer, "### InPocket(%d)", b->Object::id );
  213.     ShowInfoIf(buffer);
  214.     ClickPocket();
  215. }
  216.  
  217. void Game::AllBallsStopped() {
  218.     ShowInfoIf("### AllBallsStopped");
  219. }
  220.  
  221. #endif
  222.